/**
 * 菜单插件
 * @param data 菜单的json数据
 * @returns 菜单对象
 */
$.fn.myMenu = function(data) {
    var $container = $(this);
    var _opt = {};
    _opt.data = data;
    // 打开菜单的目的iframe
    _opt.target = "contentFrm";
    if(data == "" || data == {} || data == []) {
        console.error("菜单加载失败！！！！");
        return null;
    }
    var MyMenu = function() {
        this.init = function(menuData) {
            var $ul = $('<ul class="topnav menu-left-nest" style="margin:10px"></ul>');
            var menuHtml = this.makeMenu(menuData);
            $ul.append(menuHtml);
            $container.append($ul);
        }
        // 生成菜单的方法
        this.makeMenu = function(menuData) {
            var _this = this;
            var lis = '';
            $.each(menuData, function(index, node){
                lis += _this.makeLi(index, node) + '\n';
            });
            return lis;
        }

        //生成li元素
        this.makeLi = function(index, node) {
            var li = '<li>\n';
            var href = 'javascript:void(0);';
            var clickFunc = false;
            if(node.url) {
                href = node.url;
                clickFunc = true;
            }
            var target = node.target ? node.target : _opt.target;
            li += '<a class="tooltip-tip" href="' + href + '" title="' + node.text + '" ' + (clickFunc ? 'onclick="generateBreadCrumb(this)"' : '') + ' target="' + target + '">\n' +
            '       <i class="' + node.icon + '"></i>\n' +
            '       <span>' + node.text + '</span>\n' +
            '      </a>\n';
            if(node.nodes && node.nodes.length > 0) {
                // 递归子菜单
                li += '<ul>\n';
                var childHtml = this.makeMenu(node.nodes);
                li += childHtml + '\n';
                li += '\n</ul>';
            }
            li += '\n</li>';
            return li;
        }
    }
    var myMenu = new MyMenu();
    myMenu.init(data);
    return myMenu;
}
function generateBreadCrumb(object) {
    var menus = [];
    menus.push($(object).text());
    var pm = getPMenu($(object));
    while (pm) {
        menus.push(pm.text());
        pm = getPMenu(pm);
    }
    var $pli = $(object).closest("ul").parent("li");
    $("#breadcrumb").empty();
    var htm = '<li>\n' +
        '    <span class="entypo-home"></span>\n' +
        '        </li>\n';
    for (var i = menus.length - 1; i >= 0; i--) {
        htm += '     <li><i class="fa fa-lg fa-angle-right"></i>\n' +
            '        </li>\n' +
            '        <li><a href="javascript:void(0);" title="' + menus[i] + '">' + menus[i] + '</a>\n' +
            '        </li>\n';
    }
    $("#breadcrumb").append(htm);
    return true;
}

function getPMenu($object) {
    var $pli = $object.closest("ul").parent("li");
    if ($pli.length > 0) {
        return $pli.children("a");
    }
    return null;
}